home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 1 / Cream of the Crop 1.iso / PROGRAM / DDJ0192.ARJ / RISC.ASC < prev    next >
Text File  |  1991-11-21  |  3KB  |  144 lines

  1. _PROGRAMMING THE 29050_
  2. by David L. Moore
  3.  
  4. Example 1:
  5.  
  6. (a)
  7.  
  8. [1] add gr96,gr97,gr98
  9. [2] add gr97,gr97,1
  10. [3] subr    gr99,gr97,2
  11.  
  12. (b)
  13.  
  14. [1] load    0,0,gr96,gr97
  15. [2] store   0,0,gr96,gr98
  16.  
  17.  
  18. (c)
  19.  
  20. [1] load    0,0,gr96,gr97       ;load full 32 bit word
  21. [2] load    0,0x01,gr96,gr97    ;load byte, zero fill
  22. [3] load    0,0x11,gr96,gr97    ;load byte, sign extend
  23. [4] load    0,0x02,gr96,gr97    ;load half word, zero fill
  24. [5] load    0,0x12,gr96,gr97    ;load half word, sign extended
  25.  
  26.  
  27.  
  28.  
  29. Example 2:
  30.  
  31. (a)
  32.  
  33.  
  34. [1]     xor   ax,ax
  35. [2]     mov   cx,100
  36. [3]     lea   bx,array
  37. [4] addloop:add   ax,word ptr [bx]
  38. [5]     add   bx,2
  39. [6]     loop  addloop
  40.  
  41.  
  42. (b)
  43.  
  44. [1a]        .reg    counter,gr96
  45.  
  46. [1b]       .reg    addr,gr97
  47. [1c]        .reg    sum,gr98
  48. [1d]        .reg    temp,gr99
  49. [2]     const   sum,0
  50. [3]     const   counter,100-2
  51. [4]     const   addr,array
  52. [5]     consth  addr,array
  53. [6] addloop:load    0,0,temp,addr
  54. [7]     add addr,addr,4
  55. [8]     jmpfdec counter,addloop
  56. [9]     add sum,sum,temp
  57.  
  58.  
  59.  
  60.  
  61. Example 3
  62.  
  63. [1] const   gr96,0x12345678
  64. [2] consth  gr96,0x12345678
  65.  
  66.  
  67.  
  68. Example 4
  69.  
  70. (a)
  71.  
  72.  
  73.  
  74. [1] fdiv    gr96,gr97,gr98
  75. [2] convert gr96,gr96,unsigned,truncate,single,single
  76.  
  77.  
  78.  
  79. (b)
  80.  
  81.  
  82. [1] const   gr98,0x55555556
  83. [2] consth  gr98,0x55555556
  84. [3] multmu  gr96,gr97,gr98
  85.  
  86.  
  87.  
  88.  
  89. Example 5
  90.  
  91. (a)
  92.  
  93.  
  94.     float Euc_Norm(float x[],int len)
  95.     {
  96.         int i;
  97.         float a=0.0;
  98.         for (i=0;i<len;i++) a+=x[i]*x[i];
  99.         }
  100.  
  101.  
  102. (b)
  103.  
  104. [1]     sub lr3,lr3,2   ;prepare counter for jmpfdec
  105. [2]     const   gr96,0
  106. [3]     mtacc   gr96,single_precision,0  ;clear acc 0
  107. [4] loop:   load    0,0,gr97,lr2
  108. [5]     add lr2,lr2,4
  109. [7]     jmpfdec lr3,loop
  110. [8]     fmac    single_precision,0,gr97,gr97
  111. [9]     jmpi    lr0
  112. [10]        mfacc   gr96,single_precision,0   ;result from acc 0
  113.  
  114.  
  115.  
  116. Example 6
  117.  
  118. [1]     srl lr3,lr3,2   ;divide count by 4
  119. [2]     sub lr3,lr3,2   ;prepare counter for jmpfdec
  120. [3]     const   gr96,0
  121. [4]     mtacc   gr96,single_precision,0  ;clear accumulators
  122. [5]     mtacc   gr96,single_precision,1
  123. [6]     mtacc   gr96,single_precision,2
  124. [7]     mtacc   gr96,single_precision,3
  125. [8]     const   gr96,3      ;operations per loop, less 1
  126. [9] loop:   mtsr    CR,gr96     ;set load count special register
  127. [10]        loadm   0,0,gr97,lr2    ;load 4 words
  128. [11]        add lr2,lr2,16
  129. [12]        fmac    single_precision,1,gr97,gr97
  130. [13]        fmac    single_precision,2,gr98,gr98
  131. [14]        fmac    single_precision,3,gr99,gr99
  132. [15]        jmpfdec lr3,loop
  133. [16]        fmac    single_precision,4,gr100,gr100
  134. [17]        mfacc   gr96,single_precision,0   ;combine acc values
  135. [18]        mfacc   gr97,single_precision,1
  136. [19]        fadd    gr96,gr96,gr97
  137. [20]        mfacc   gr98,single_precision,2
  138. [21]        mfacc   gr99,single_precision,3
  139. [22]        fadd    gr96,gr96,gr98
  140. [23]        jmpi    lr0
  141. [24]        fadd    gr96,gr96,gr99
  142.  
  143.  
  144.